package com.jrx.anytxn.param.service.limit;

import com.jrx.anytxn.i18n.response.TxnPage;
import com.jrx.anytxn.common.exception.TxnException;
import com.jrx.anytxn.param.dto.limit.CreditLimitTemplateReq;
import com.jrx.anytxn.param.dto.limit.CreditLimitTemplateRes;
import com.jrx.anytxn.param.dto.limit.CreditLimitTypeRes;
import com.jrx.anytxn.param.dto.limit.PrCreditLimit;

import java.util.List;


/**
 * @Classname ICreditLimitTemplateService
 * @Description 额度模板service接口
 * @Date 2019/6/12 0012 下午 21:04
 * @Created by yf
 */
public interface ICreditLimitTemplateService {

    /**
     * 根据租户ID分页查询所有额度模板信息
     *
     * @param pageNum  页码
     * @param pageSize 页大小
     * @param tenantId 租户ID
     * @return com.jrx.anytxn.common.data.TxnPage<com.jrx.anytxn.param.dto.limit.CreditLimitTemplateRes>
     * @author fan.yang
     * date: 2019/10/16 0016 下午 13:38
     */
    TxnPage<CreditLimitTemplateRes> findAllPageByTenId(Integer pageNum, Integer pageSize, String tenantId) throws TxnException;

    /**
     * 根据额度模板ID和租户ID删除此额度模板信息
     *
     * @param templateId 额度模板ID
     * @param tenantId   租户ID
     * @return java.lang.Boolean
     * @author fan.yang
     * date: 2019/10/16 0016 下午 13:58
     */
    Boolean removeLimitTemplateByTempIdAndTenId(String templateId, String tenantId) throws TxnException;

    /**
     * 根据租户ID和模板ID查询此详细信息
     *
     * @param templateId 模板ID
     * @param tenantId   租户ID
     * @return com.jrx.anytxn.param.dto.limit.CreditLimitTemplateRes
     * @author fan.yang
     * date: 2019/10/17 0017 下午 18:18
     */
    CreditLimitTemplateRes findByTemplateIdAndTenId(String templateId, String tenantId) throws TxnException;


    /**
     * 根据额度类型ID和租户ID查询额度类型信息
     *
     * @param limitId  额度节点ID
     * @param tenantId 租户ID
     * @return com.jrx.anytxn.param.dto.limit.CreditLimitTypeRes
     * @author fan.yang
     * date: 2019/10/17 0017 下午 18:18
     */
    CreditLimitTypeRes findCreditLimitTypeByLimitId(String limitId, String tenantId);

    /**
     * 修改额度模板信息
     *
     * @param creditLimitTemplateReq 额度模板请求参数
     * @return com.jrx.anytxn.param.dto.limit.CreditLimitTemplateRes
     * @author fan.yang
     * date: 2019/10/17 0017 下午 18:18
     */
    CreditLimitTemplateRes modifyLimitTemplate(CreditLimitTemplateReq creditLimitTemplateReq) throws TxnException;

    /**
     * 增加额度模板信息
     *
     * @param creditLimitTemplateReq 额度模板请求参数
     * @return com.jrx.anytxn.param.dto.limit.CreditLimitTemplateRes
     * @author fan.yang
     * date: 2019/10/16 0016 下午 14:54
     */
    CreditLimitTemplateRes addLimitTemplate(CreditLimitTemplateReq creditLimitTemplateReq) throws TxnException;

    /**
     * 根据租户ID查询所有额度模板
     *
     * @param tenantId 租户ID
     * @return java.util.List<com.jrx.anytxn.param.dto.limit.CreditLimitTemplateRes>
     * @author fan.yang
     * date: 2019/10/16 0016 下午 13:47
     */
    List<CreditLimitTemplateRes> findAllLimitTemplateByTenId(String tenantId);

    /**
     * 根据渠道号,组织号和节点模版ID关联查询节点数据集合
     *
     * @param templateId 机构ID
     * @param templateId 模板ID
     * @param templateId 租户ID
     * @return java.util.List<com.jrx.anytxn.param.dto.limit.PrCreditLimit>
     * @author Qingyao Xing
     * @date 2019/8/28 17:44
     */
    List<PrCreditLimit> getPrCreditLimitListByTemIdAndOrgId(String organizationId, String templateId, String tenantId);

}
